$webwork.htmlEncode($page.space.name) : Working With The Catalog
This page last changed on Sep 27, 2006 by bowens.
In this tutorial you will learn how to interact with the GeoServer catalog. The target is to Create a simple service which queries the catalog for data stores and feature types.So first we create our service, lets call it CatalogLister which will perform the following operations:
public class CatalogLister { public void listDataStores( OutputStream output ) { } public void listFeatureTypes( OutputStream output ) { } } The first thing that is needed is a reference to the catalog itself. So lets add a constructor which takes the catalog as its only paramter. GeoServerCatalog catalog; public CatalogLister( GeoServerCatalog catalog ) { this.catalog = catalog; } First up is listDataStores. A data store corresponds to a service in the catalog. In catalog terminology, one must "resolve a service handle into a data store". Implementing this operation, we step through each service and test for a resolve to a data store. When we find a service that is indeed backed by a data store it is printed out. public void listDataStores( OutputStream output ) { //output PrintStream printer = new PrintStream( output ); //get all services from the catalog List services = catalog.members( null ); for ( Iterator s = services.iterator(); s.hasNext(); ) { Service service = (Service) s.next(); //first we must test to see wether this handle is backed by a datastore if ( service.canResolve( DataStore.class ) ) { //it is a data store, write it to output printer.println( service.getIdentifier().toString() ); } } } Next up is listFeatureTypes. A feature type corresponds to a geo resource in the catalog. In the catalog hierarchy geo resources are children or services. So for each service in teh catalog, we check each geo resource for a resolve to a feature type. This time we will go a step further, and actually perform the resolve to underlying feature type object. public void listDataStores( OutputStream output ) { //output PrintStream printer = new PrintStream( output ); //get all services from the catalog List services = catalog.members( null ); for ( Iterator s = services.iterator(); s.hasNext(); ) { Service service = (Service) s.next(); //get all children List geoResources = service.members( null ); for ( Iterator g = geoResources.iterator(); g.hasNext(); ) { GeoResource geoResource = (GeoResourfce) g.next(); //do the test if ( geoResource.canResolve( FeatureType.class ) ) { //do the resolve FeatureType featureType = (FeatureType) geoResource.resolve( FeatureType.class, null ); printer.println( featureType.getTypeName() ); } } } } |
Document generated by Confluence on Jan 16, 2008 23:26 |